进程
1 from time import sleep
2
3 def func():
4 print("你好,我也是单任务")
5
6 if __name__ == '__main__':
7 while True:
8 print("你好我是单任务")
9 sleep(2)
10 func()
11
12 # ------------------输出结果:一条一条输出--------------------
from time import sleep
from multiprocessing import Process # 导入系统的进程对象
import os # 导入操作系统
def func(string):
while True:
print("我是---子进程,我的id是:",os.getpid())
sleep(2)
# 这个程序运行起来操作系统会给他创建一个主进程
if __name__ == '__main__':
# 创建一个进程对象,并且把func函数绑定到进程对象,
# 进程名被命名为:“hello”。这个进程是在主进程创建完以后创建的子进程。
p = Process(target=func,args=("hello",))
p.start() # 开启进程
while True:
print("我是---主进程,我的id是:",os.getpid())
sleep(2)
# ---------------输出时:子进程和主进程同时进行输出-------------------
1 import threading
2 from time import sleep
3
4 def func(s):
5 while True:
6 print("我是子线程-",threading.current_thread().name,s)
7 sleep(1)
8 if __name__ == '__main__':
9
10 # 创建一个子线程对象
11 t = threading.Thread(target=func,name="func线程",args=("OK!",))
12 t.start() # 开启这个子线程
13 while True:
14 # 获取并打印主线程名字
15 print("我是主线程,我的名字为:",threading.current_thread().name)
16 sleep(1)
17
18
19 # ----------- 主线程和子线程并发执行------------------
线程
线程的创建
1 import threading # 线程模块
2 from time import sleep
3 import _thread # 此模块用于给线程加守护
- 方法一:守护线程 [主线程死到后,子线程也会死掉]
1 # 定义一个方法--子线程,用于绑定线程
2 def run(arg):
3 # 线程名
4 name = threading.current_thread().name
5 print("子---线程名为:",name)
6 for i in range(1,9):
7 print("子线程%s执行了%d次循环"%(threading.current_thread().name,i))
8 sleep(2)
9
10 # 创建方式一、守护线程
11 def thread1():
12 # 使用守护方式创建一个子线程,守护线程不需要手动开启,绑定后自动就会开启。
13 # 此时的代码是在主线程中运行的,当主线程死掉子线程也会死掉
14 _thread.start_new_thread(run,("MrGuo",))
15 # 获取主线程的name
16 name = threading.current_thread().name
17 print("主---线程名为:",name)
18 for i in range(1,5):
19 print("主线程%s执行了%d次循环"%(name,i))
20 sleep(1)
1 # 结果,主线程死掉后,子线程也同时死到。Dummpy傀儡
2 """
3 主---线程名为: MainThread
4 子---线程名为: Dummy-1
5 子线程Dummy-1执行了1次循环
6 主线程MainThread执行了1次循环
7 主线程MainThread执行了2次循环
8 子线程Dummy-1执行了2次循环
9 主线程MainThread执行了3次循环
10 主线程MainThread执行了4次循环
11 子线程Dummy-1执行了3次循环
12 """
1 # 定义一个方法--子线程,用于绑定线程
2 def run(arg):
3 # 线程名
4 name = threading.current_thread().name
5 print("子---线程名为:",name)
6 for i in range(1,7):
7 print("子线程%s执行了%d次循环"%(threading.current_thread().name,i))
8 sleep(2)
9
10 # 创建方式二、非守护线程
11 def thread2():
12 # 采用非守护的方式来创建线程。 主线程死掉后,子线程不受影响
13 t = threading.Thread(target=run,args=("Ya",))
14 t.start()
15 # 获取主线程的name
16 name = threading.current_thread().name
17 print("主---线程名为:", name)
18 for i in range(1, 4):
19 print("主线程%s执行了%d次循环" % (name, i))
20 sleep(1)
21
22 if __name__ == '__main__':
23 thread2()
1 # 结果,主线程死掉后,不影响子线程继续执行
2 """
3 子---线程名为: Thread-1
4 主---线程名为: MainThread
5 主线程MainThread执行了1次循环
6 子线程Thread-1执行了1次循环
7 主线程MainThread执行了2次循环
8 子线程Thread-1执行了2次循环
9 主线程MainThread执行了3次循环
10 子线程Thread-1执行了3次循环
11 子线程Thread-1执行了4次循环
12 子线程Thread-1执行了5次循环
13 子线程Thread-1执行了6次循环
14 """
1 # 创建方式三、自定义线程
2 # 自定义个线程类,继承自threading.Thread,变成其子类
3 class MyThead(threading.Thread):
4 # 重写构造方法
5 def __init__(self,name,task):
6 super().__init__()
7 self.name = name
8 self.task = task
9 # 重写run方法
10 def run(self):
11 # 线程类核心函数,这里就是线程功能
12 print("子---线程名为:",self.name,self.task)
13 for i in range(1, 9):
14 print("子线程%s执行了%d次循环" % (self.name, i))
15 sleep(2)
16
17 def thread3():
18 t = MyThead("自定义子线程","Peng")
19 t.start()
20 # 获取主线程的name
21 name = threading.current_thread().name
22 print("主---线程名为:", name)
23 for i in range(1, 4):
24 print("主线程%s执行了%d次循环" % (name, i))
25 sleep(1)
26
27 if __name__ == '__main__':
28 thread3()
1 # 结果, 主进程死掉后,子进程不受影响
2 """
3 子---线程名为: 自定义子线程 Peng
4 子线程自定义子线程执行了1次循环
5 主---线程名为: MainThread
6 主线程MainThread执行了1次循环
7 主线程MainThread执行了2次循环
8 子线程自定义子线程执行了2次循环
9 主线程MainThread执行了3次循环
10 子线程自定义子线程执行了3次循环
11 子线程自定义子线程执行了4次循环
12 子线程自定义子线程执行了5次循环
13 子线程自定义子线程执行了6次循环
14 子线程自定义子线程执行了7次循环
15 子线程自定义子线程执行了8次循环
16 """