多进程:主要运行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