记录:备忘录。
方式一:fork()
import os
import time
def worker(info):
while True:
print(info)
time.sleep(1)
def main():
ret = os.fork()
if ret == 0:
worker("主进程")
else:
worker("子进程")
if __name__ == '__main__':
print("主进程开始...")
main()
print("主进程结束...")
方式二:Process
from multiprocessing import Process
import os
def worker(info):
print("子进程开始...")
for i in range(10):
print("进程%d:%s第%d次执行"%(os.getpid(),info,i))
print("子进程结束...")
def main():
p = Process(target=worker, args=("红玲",))
p.start()
if __name__ == '__main__':
print("主进程开始...")
main()
print("主进程结束...")
方式三:继承Process
from multiprocessing import Process
import os
class MyProcess(Process):
def run(self):
print("子进程开始...")
for i in range(10):
print("进程号%d:第%d次执行" % (os.getpid(), i))
print("子进程结束...")
def main():
p = MyProcess()
p.start()
if __name__ == '__main__':
print("主进程开始...")
main()
print("主进程结束...")
方式四:进程池Pool同步
from multiprocessing import Pool
import os
import time
def worker(info,num):
for i in range(10):
print("进程号%d:%s%d第%d次执行"%(os.getpid(), info,num,i))
time.sleep(0.5)
def main():
pool = Pool(3)
for i in range(10):
pool.apply(worker, ("红玲",i))
# 关闭进程池
pool.close()
pool.join()
if __name__ == '__main__':
main()
方式五:进程池Pool异步
from multiprocessing import Pool
import os
import time
def worker(info,num):
for i in range(10):
print("进程号%d:%s%d第%d次执行"%(os.getpid(), info,num,i))
time.sleep(1)
def main():
pool = Pool(3)
for i in range(10):
pool.apply_async(worker, ("红玲",i))
# 关闭进程池
print("qqq")
pool.close()
pool.join()
if __name__ == '__main__':
main()
以上,感谢。