python多线程使用thread

8 篇文章 0 订阅
8 篇文章 0 订阅

python 使用多线程的几个要点:

  • 执行定时任务:
import sched
import threading
import time


def new_task(function, delay_time, args):
    """
    定时任务函数
    :param function: 需要执行的函数
    :param delay_time:  延迟多少时间执行
    :param args:  需要给function函数传递的参数,是个tuple
    :return: 
    """
    scheduler = sched.scheduler(time.time, time.sleep)
    scheduler.enter(delay_time, 10, function, args)
    thread = threading.Thread(target=scheduler.run)
    thread.start()

    return thread

# 我们写一个初始function函数
def helloworld(what):
    print 'this is {}'.format(what)
# 如何调用定时执行这个helloworld函数
new_task(hellowrold, 3 ('what', ))  # 3秒后执行helloworld函数
  • 多线程处理高并发— 线程锁
import threading
L = threading.Lock()

def helloworld(what, ThreadName):
    L.acquire() # 线程锁
    print 'this is {}, and this is ThreadName: {}'.format(what, ThreadName)
    L.release() # 释放锁
# for 循环多次执行这个函数
for i in range(20):
    new_task(hellowrold, 3 ('what', 'thread-name-{}'.format(i))
# 这样每次就会执行一次函数,当函数释放锁之后才执行下一次,
# L.acquire() 和 L.release() 是成对使用的
  • 多线程处理高并发 – 线程池
import multiprocessing

def print_time(s, threadNname, delay, **kwargs):
    if kwargs.get('lock', None) is not None:
        print('get lock')
        kwargs.get('lock').acquire()
    count = 0
    while count < 5:
        time.sleep(delay)
        count += 1
        print('this thread name is {threadname} and 当前时间是 {timename}'.format(timename=time.ctime(time.time()),
                                                                             threadname=threadNname))
    if kwargs.get('lock', None) is not None:
        kwargs.get('lock').release()
    pass

s = multiprocessing.Semaphore(2)  #设置线程池的大小,每次只可以而同事启动2个线程

for i in range(20):
    """
    入口函数
    """
    p = multiprocessing.Process(target=print_time, args=(s, 'xiancheng{}'.format(i), 3), kwargs={'lock':s})
    p.start()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值