由于Python的datetime和time中的_strptime方法不支持多线程,运行时会报错:AttributeError: _strptime

code:

# -*- coding:utf-8 -*-
import threading
import time
import datetime ISO8601_INT_SECONDS = '%Y-%m-%dT%H:%M:%SZ'
expiry_string = "2018-01-04T04:23:02Z" def test_thread(expiry_string):
expiry = datetime.datetime.strptime(
expiry_string, ISO8601_INT_SECONDS)
print expiry threads = []
for i in xrange(5):
t = threading.Thread(target=test_thread, args=(expiry_string,))
threads.append(t) for t in threads:
t.start() for t in threads:
t.join() print "every thing is ok!!!"

会报错误:AttributeError: 'module' object has no attribute '_strptime'

 
解决方案:
1.在调用_strptime的地方加锁(推荐)
方式1.
c = threading.RLock()
def f():
    with c:
        datetime.datetime.strptime("20100101","%Y%m%d")
方式2:
LOCK = thread.allocate_lock()
 LOCK.acquire()
 datetime.datetime.strptime("20100101","%Y%m%d")
 LOCK.release()
 
2、在线程启动前调用一次_strptime(原因是报了这个错),不是很推荐
方式1、import _strptime
方式2、在调用线程前执行一次: datetime.datetime.strptime("20100101","%Y%m%d")。(似乎对我们不合适)
 
参考资料:

Python多线程下存在_strptime的问题的更多相关文章

  1. Python多线程下的_strptime问题

    Python多线程下的_strptime问题 由于Python的datetime和time中的_strptime方法不支持多线程,运行时会报错: import datetimeimport threa ...

  2. python 多线程两种实现方式,Python多线程下的_strptime问题,

    python 多线程两种实现方式 原创 Linux操作系统 作者:杨奇龙 时间:2014-06-08 20:24:26  44021  0 目前python 提供了几种多线程实现方式 thread,t ...

  3. python多线程不能利用多核cpu,但有时候多线程确实比单线程快。

    python 为什么不能利用多核 CPU  GIL 其实是因为在 python中有一个 GIL( Global Interpreter Lock),中文为:全局解释器锁.  1.最开始时候设计GIL是 ...

  4. 为什么在Python里推荐使用多进程而不是多线程?(为什么python多线程无法增加CPU使用率?)

    最近在看Python的多线程,经常我们会听到老手说:“Python下多线程是鸡肋,推荐使用多进程!”,但是为什么这么说呢? 要知其然,更要知其所以然.所以有了下面的深入研究: 首先强调背景:     ...

  5. python 多线程学习小记

    python对于thread的管理中有两个函数:join和setDaemon setDaemon:如果在程序中将子线程设置为守护线程,则该子线程会在主线程结束时自动退出,设置方式为thread.set ...

  6. python 类变量 在多线程下的共享与释放问题

    最近被多线程给坑了下,没意识到类变量在多线程下是共享的,还有一个就是没意识到 内存释放问题,导致越累越大 1.python 类变量 在多线程情况 下的 是共享的 2.python 类变量 在多线程情况 ...

  7. python多线程场景下print丢失

    python多线程情况下,print输出会出现丢失的情况,而logging模块的日志输出不会. 以下是示例代码,多运行几次就会发现这个有意思的现象 # coding:utf-8 import thre ...

  8. python 类变量 在多线程下的共享与释放问题-乾颐堂

    最近被多线程给坑了下,没意识到类变量在多线程下是共享的,还有一个就是没意识到 内存释放问题,导致越累越大 1.python 类变量 在多线程情况 下的 是共享的 2.python 类变量 在多线程情况 ...

  9. python多线程网络编程

    背景 使用过flask框架后,我对request这个全局实例非常感兴趣.它在客户端发起请求后会保存着所有的客户端数据,例如用户上传的表单或者文件等.那么在很多客户端发起请求时,服务器是怎么去区分不同的 ...

随机推荐

  1. 为什么用Flow

    Flow 是 facebook 出品的 JavaScript 静态类型检查工具.Vue.js 的源码利用了 Flow 做了静态类型检查,所以了解 Flow 有助于我们阅读源码. flow的工作方式? ...

  2. ECMAScript6 - 2.变量的解构赋值

    1.数组解构赋值 1.1.基本用法 // (1)对数组变量赋值 let [foo, [[bar], baz]] = [1, [[2], 3]]; foo; // 1 bar; // 2 baz; // ...

  3. windows应用程序框架及实例

    应用程序框架:同一类型应用程序的结构大致相同,并有很多相同的源代码,因此可以通过一个应用程序框架AFX(Application FrameWorks)编写同一类型应用程序的通用源代码. 主要向导: D ...

  4. 【C语言程序】输出前50个素数

    #include <stdio.h> #include <stdlib.h> int main(void) {  ;  ;  ){   ;   ;i<x;i++){    ...

  5. jmeter--001.介绍、下载与安装

    一.介绍 使用场景: -1.接口测试 -2.性能测试 .... 特点: -1.开源.轻量级.插件化 -2.适合自动化和持续集成 二.下载(Windows环境) 下载网址:http://jmeter.a ...

  6. 转 mysql Next-Key Locking

    原文:http://dev.mysql.com/doc/refman/5.5/en/innodb-next-key-locking.html 14.5.2.5 Avoiding the Phantom ...

  7. Mybatis_2.基于XML的增删改查

    1.实体类User.java public class User { private int id; private String name; private int age; //getter.se ...

  8. 6. 深度克隆_ES7**_arr.includes('孙悟空')

    1. 如何实现深度克隆 利用 JSON 方法 (没办法克隆函数数据) `JSON.parse(JSON.stringify(xxx))` 自定义方法 检查所有数据类型的方法 `Object.proto ...

  9. [LeetCode] Transform to Chessboard 转为棋盘

    An N x N board contains only 0s and 1s. In each move, you can swap any 2 rows with each other, or an ...

  10. javascript的数组之map()

    map()方法创建一个新数组,其结果是该数组中的每个元素都调用一个提供的回调函数后返回的结果.新数组 // ES6 let numbers = [1, 5, 10, 15]; let doubles ...