Python多线程

本文通过Python代码示例介绍了如何使用多进程和多线程来并行执行任务。详细展示了使用os模块创建子进程及使用threading模块创建线程的方法,并解释了join与setDaemon的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#!/usr/bin/python
#coding=utf-8
# multiprocessing.py
import os

print 'Process (%s) start...' % os.getpid()#getpid是获得当前进程的进程号
pid = os.fork()
#ork()调用一次,返回两次,因为操作系统自动把当前进程(称为父进程)复制了一份(称为子进程)
# 然后,分别在父进程和子进程内返回。子进程永远返回0,而父进程返回子进程的ID
print 'pid=',pid
if pid==0:
    print 'I am child process (%s) and my parent is %s.' % (os.getpid(), os.getppid())
    #getppid()可以拿到父进程的ID
else:
    print 'I (%s) just created a child process (%s).' % (os.getpid(), pid)

join:如在一个线程B中调用threada.join(),则threada结束后,线程B才会接着threada.join()往后运行。
setDaemon:主线程A启动了子线程B,调用b.setDaemaon(True),则主线程结束时,会把子线程B也杀死,与C/C++中得默认效果是一样的

#!/usr/bin/python
#coding=utf-8
#coding=utf-8
import threading
from time import ctime,sleep


def music(func):
    for i in range(2):
        print "I was listening to %s. %s" %(func,ctime())
        sleep(1)

def move(func):
    for i in range(2):
        print "I was at the %s! %s" %(func,ctime())
        sleep(5)

threads = []
t1 = threading.Thread(target=music,args=(u'爱情买卖',))
#当多线程启动的方法的参数只有一个参数的时候,实例化Thread的args的参数要表示为(param1,)需要在参数
#后面打一个逗号,这是因为tuple元组只有一个元素的时候需要在后面加一个逗号,防止歧义。
threads.append(t1)
t2 = threading.Thread(target=move,args=(u'阿凡达',))
threads.append(t2)

if __name__ == '__main__':
    for t in threads:
        t.setDaemon(True)
        t.start()
    t.join()

    print "all 

运行结果:

/usr/bin/python2.7 /home/xuhang/otherfiles/xuhang/py/hello.py
I was listening to 爱情买卖. Wed Mar 30 20:39:59 2016
I was at the 阿凡达! Wed Mar 30 20:39:59 2016
I was listening to 爱情买卖. Wed Mar 30 20:40:00 2016
I was at the 阿凡达! Wed Mar 30 20:40:04 2016
all over Wed Mar 30 20:40:09 2016

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值