小编Mic*_*ael的帖子

在R中的函数中保存Stata文件

我正在尝试将文件从一个文件夹移动到另一个文件夹.我有一个名为"data"的数据框,其中包含"from"位置,"to"位置和文件名"myfile".

library(foreign)


movefile <- function(from, to, myfile){
  readfile <- paste(from, myfile, sep = "/")
  temp <- read.dta(readfile)
  copyto <- paste(to, myfile, sep = "/")
  write.dta(temp, copyto)
}
Run Code Online (Sandbox Code Playgroud)

当我使用以下代码行调用该函数时:

movefile(data$from, data$to, data$myfile)
Run Code Online (Sandbox Code Playgroud)

它只复制第一个文件.当我尝试通过在函数中打印各种术语来诊断问题时(例如,添加print(copyto)作为函数的最后一行),它会打印数据中列出的每个文件,表明该函数正在为每一行运行数据,但它实际上并不复制第一个以外的文件.我怎么能纠正这个?

r function save stata

4
推荐指数
1
解决办法
90
查看次数

Python 多处理脚本似乎没有错误地冻结

我正在尝试使用该multiprocessingmyfunc并行调用一个函数(让我们称之为),特别是使用pool.mapie pool.map(myfunc, myarglist)。当我简单地循环myarglist而不使用时multiprocessing,没有错误,应该是这种情况,因为所有操作myfunc都在一个try块内调用。但是,当我使用pool.map脚本调用该函数时,总是会停止运行,即它停止打印“myfunc done!” 我的函数中的语句和进程停止使用 CPU,但它永远不会返回resultlist. 我从 ubuntu 12.04 的终端运行 python 2.7。什么可能导致这种情况发生,我应该如何修复/排除问题?

cpu_count = int(multiprocessing.cpu_count())
pool = Pool(processes = cpu_count)
resultlist = pool.map(myfunc, myarglist)
pool.close()
Run Code Online (Sandbox Code Playgroud)

更新 使用多处理时的一个问题可能是对象的大小,如果您认为这可能是一个问题,请参阅此答案。正如答案指出的那样“如果这个 [解决方案] 不起作用,那么您从函数中返回的东西可能是不可腌制的,因此无法正确地通过队列。” 多处理通过酸洗对象在进程之间传递对象。事实证明,我的一两个对象有汤BeautifulSoup ,不会腌制

python multiprocessing python-2.7 ubuntu-12.04

4
推荐指数
1
解决办法
1万
查看次数

Amazon SQS,Boto和Python:在Amazon EC2上获取和运行脚本

我想在Amazon EC2上运行一组python脚本.本帮助指南建议使用Amazon SQS管理队列.从本指南中,我了解了如何启动EC2实例并从我的计算机将作业发送到队列,但我不明白如何设置EC2实例,以便在从中获取后运行python脚本队列然后将结果保存到Amazon S3.如何获取,在EC2服务器上运行,并将结果保存到python脚本的S3?

python amazon-s3 amazon-ec2 boto

3
推荐指数
1
解决办法
3760
查看次数

引用现有S3存储桶以使用Boto保存文件

我正在按照此帮助指南进行操作,该指南介绍了如何在创建文件后将文件保存到S3存储桶.但是,我找不到如何保存到现有存储桶的说明.更具体地说,我不确定如何引用预先存在的桶.我相信更换create_bucketget_bucket的伎俩.这允许我保存文件,但因为文档说get_bucket"按名称检索存储桶"我想在这里检查并确保它只检索存储桶的元数据并且不会将存储桶的所有内容下载到我的电脑.我这样做是对还是有更多的pythonic方式?

import boto
s3 = boto.connect_s3()
bucket = s3.get_bucket('mybucket')
from boto.s3.key import Key
k = Key(bucket)
k.key = 'foobar'
k.set_contents_from_string('This is a test of S3')
Run Code Online (Sandbox Code Playgroud)

python amazon-s3 boto

3
推荐指数
1
解决办法
1715
查看次数

使用只读副本升级在AWS RDS MySQL数据库上创建索引

我想在Amazon RDS上的数据库中为MySQL表添加索引,但我不想在创建索引时停止使用数据库.这个答案建议使用只读副本促销,首先在只读副本上创建索引,然后提升只读副本.我创建了一个读取副本来尝试这种方法,但是当我尝试更改读取副本上的索引时,我得到了ERROR 1290 (HY000): The MySQL server is running with the --read-only option so it cannot execute this statement.我如何制作它以便我可以编辑只读副本,这是否会阻止亚马逊继续更新只读副本以匹配主数据库?

mysql indexing amazon-web-services amazon-rds server

3
推荐指数
1
解决办法
1576
查看次数

Python多重处理:在函数内调用pool.map

我正在尝试使用该mutltiprocessing程序包在一个函数中使用多个CPU。当我在功能之外运行玩具示例时,它可以在四分之一秒内运行而不会出现问题(请参见下文)。

from multiprocessing import Pool
import time

start = time.clock()

def f(x):
    return x*x

if __name__ == '__main__':
    with Pool(processes=7) as pool:     
        result = pool.map(f, range(1000))



print(time.clock() - start)
Run Code Online (Sandbox Code Playgroud)

但是,当我将相同的代码改编为一个函数(请参见下文)时,它会打印True以指示__name__ == '__main__',但它将永远运行并且永远不会返回结果。我在Windows 7上运行Python 3.3。

from multiprocessing import Pool
import time

start = time.clock()

def f(x):
    return x*x

def testfunc(r):
    if __name__ == '__main__':
        print(True)
        with Pool(processes=7) as pool:     
            result = pool.map(f, range(r))

    return result

result = testfunc(1000)
print(time.clock() - start)
Run Code Online (Sandbox Code Playgroud)

python windows function multiprocessing python-3.x

2
推荐指数
1
解决办法
5054
查看次数

如何使用SQLAlchemy将批量条目提交到SQL数据库,并且有错误空间?

我可以使用SQLAlchemy将条目提交到具有容错容错的SQL数据库吗?将大批条目一起提交效率要高得多,但如果其中一个条目中存在错误,例如整数列中的文本,则整个批处理无法保存到数据库中.我下面的解决方法单独提交条目,但是这种方法可能会创建太多与mysql服务器的连接,特别是在并行运行时.是否有更有效的方式将条目作为批处理提交,但有错误的余地?

def commitentry(database, enginetext, verbose = False):
    """
    Takes a database object and text string that defines the SQL
    engine and adds all entries in the database list to the SQL
    database.
    """

    engine = create_engine(enginetext)
    Session = sessionmaker()
    Session.configure(bind=engine)
    session = Session()
    counter = 0
    for entry in database:
        try:
            session.add(entry)
            session.commit()

        except Exception, e:
            print("Commit Error")
            session.rollback()


            if verbose:
                print(e)

        finally:
            counter += 1
            if verbose:
                print(counter, counter/float(len(database)))

    if verbose:
        print("Entries saved!")
    session.close()
Run Code Online (Sandbox Code Playgroud)

python mysql sql sqlalchemy

2
推荐指数
1
解决办法
643
查看次数

适用于MYSQL的ASCII和Unicode中的SQLAlchemy大字符串

在python类中,SQLAlchemy您必须为字符串变量指定最大字符长度。例如,url = Column(String(200))我有兴趣存储一个大字符串,但是当我尝试设置时mytextfield = Column(String(2**30)),出现以下错误:

OperationalError: (OperationalError) (1074, "Column length too big for column 'textfield' (max = 21845); use BLOB or TEXT instead") '\nCREATE TABLE users (\n\tid INTEGER NOT NULL AUTO_INCREMENT, \n\tname VARCHAR(50), \n\tfullname VARCHAR(50), \n\tpassword VARCHAR(12), \n\ttextfield VARCHAR(2147483648), \n\tPRIMARY KEY (id)\n)\n\n' ()

如何保持ascii编码但增加SQLAlchemy对象Base类中字符串的最大长度?如果我要切换为使用unicode,mytextfield = Column(UnicodeText(2**30))我是否认为这将默认为utf-8,并且不会增加标准英文字符的存储大小?如果它是在utf-8中,并且我从SQL数据库中检索了一个条目,text = u'my text here'即使最初输入的内容是文本,该文本也将等效于text = 'my text here'

这是我当前的代码:

from sqlalchemy import create_engine
engine = create_engine("mysql://user:password@host/database")

from sqlalchemy.ext.declarative import declarative_base

Base = …
Run Code Online (Sandbox Code Playgroud)

python mysql unicode ascii sqlalchemy

1
推荐指数
1
解决办法
3312
查看次数

SQLAlchemy 关系

我知道将ForeignKey列约束为另一个表中包含的 id 值,以便可以轻松链接两个不同表中的条目,但我不明白relationships(). 据我所知,声明ParentChild类之间的关系的主要作用是parentobject.child现在将引用链接到子表中父对象的条目。宣布关系还有什么其他影响?声明关系如何改变 SQL 数据库的行为或 SQLAlchemy 如何与数据库交互?

python sql sqlalchemy relationship

1
推荐指数
1
解决办法
241
查看次数

使用pymc的Python中的贝叶斯IRT模型

我想用Python估计一个项目响应理论(IRT)模型.更具体地说,参考学生参加考试的典型IRT示例.对于每个学生,我们观察他们是否对他们在考试中回答的问题给出了正确的答案.这给了我们一个观察结果矩阵X,从中我们想要估计每个问题(1)难度参数α和(2)辨别参数β,这样我们也可以估计每个学生潜在能力Y作为他们是否的函数在每个测试问题上得到正确的答案,即α+βX.我可以找到如何在Python中使用MCMC估计这种类型的IRT贝叶斯模型的最好例子就是这个例子.从这个例子中我不明白的是,学生是否在测试问题上得到正确答案的X矩阵进入模型.以下是此代码的略微修改版本,旨在估计每个学生的潜在能力:

#from pylab import * #Pylab will not install with pip so I just loaded numpy itself
from numpy import *
import numpy
from pymc import *
from pymc.Matplot import plot as mplot

numquestions = 300 # number of test items being simulated
numpeople = 10 # number of participants
numthetas = 1 # number of latent proficiency variables

generating = 0
theta_initial = zeros((numthetas, numpeople))
correctness = np.random.randint(2, size= numquestions * numpeople) == 1 #Produces Error
#correctness …
Run Code Online (Sandbox Code Playgroud)

python bayesian pymc

1
推荐指数
1
解决办法
2324
查看次数

Python查找字符串中的所有打开括号

我试图在字符串中找到所有开括号的位置.根据这个答案,我能够找到字母的位置,但我找不到括号的位置.例如l = [3, 4],但当我试图找到所有(我得到error: unbalanced parenthesis.

import re

s = "(Hello("
l = [m.start() for m in re.finditer('l', s)]
openp = [m.start() for m in re.finditer('(', s)]
Run Code Online (Sandbox Code Playgroud)

python regex

0
推荐指数
1
解决办法
1217
查看次数

Python错误"长度未定义"

请帮我修复这段代码!当我运行它时,它说"长度没有定义"

word1 = "sesquipedalian"

word2 = "sesquiannual"
length_of_word1 = length(word1)

length_of_word2 = length(word2)

test_number = 4298374272384726348726348726348234

if length_of_word1>length_of_word2:
    test_number += length_of_word1%3
else:
    test_number -= length_of_word1%3

print test_number
Run Code Online (Sandbox Code Playgroud)

python

0
推荐指数
1
解决办法
2985
查看次数