多进程:主要运行multiprocessing模块
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
import os,time import sys from multiprocessing import Process class MyProcess(Process): """docstring for MyProcess""" def __init__( self , arg, callback): super (MyProcess, self ).__init__() self .arg = arg self .callback = callback def run( self ): self .callback( self .arg) def test(arg): print ( "子进程{}开始>>> pid={}" . format (arg,os.getpid())) for i in range ( 1 , 5 ): sys.stdout.write( "子进程{}运行中{}\r" . format (arg,i)) sys.stdout.flush() time.sleep( 1 ) def main(): print ( "主进程开始>>> pid={}" . format (os.getpid())) myp = MyProcess( 1 ,test) myp.start() myp2 = MyProcess( 2 ,test) myp2.start() myp.join() myp2.join() print ( "主进程终止" ) if __name__ = = '__main__' : main() |
线程池:主要运用了未来模块!下面例子,第一个是正常,第二第线程池,第三个用运行了2个线程池,会排队
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
from concurrent.futures import ThreadPoolExecutor import time def sayhello(a): print ( "hello: " + a) time.sleep( 2 ) def main(): seed = [ "a" , "b" , "c" ] start1 = time.time() for each in seed: sayhello(each) end1 = time.time() print ( "time1: " + str (end1 - start1)) start2 = time.time() with ThreadPoolExecutor( 3 ) as executor: for each in seed: executor.submit(sayhello,each) end2 = time.time() print ( "time2: " + str (end2 - start2)) start3 = time.time() with ThreadPoolExecutor( 2 ) as executor1: executor1. map (sayhello,seed) end3 = time.time() print ( "time3: " + str (end3 - start3)) if __name__ = = '__main__' : main() |
总结
以上所述是小编给大家介绍的python多进程使用及线程池的使用方法代码详解,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对服务器之家网站的支持!
原文链接:https://www.cnblogs.com/firebirdweb/archive/2018/10/24/9840784.html